/**
 * // Definition for a Node.
 * function Node(val,children) {
 *    this.val = val;
 *    this.children = children;
 * };
 */

/**
 * @param {Node|null} root
 * @return {number}
 */

var maxDepth = function (root) {
    function dfs(root) {
        // 结点不存在 则返回0
        if (!root) {
            return 0
        }
        // 若无子结点 则返回1
        if (!root.children) {
            return 1
        }
        let max = 0
        // 遍历 取子结点的最大深度
        for (let i = 0; i < root.children.length; i++) {
            max = Math.max(max, dfs(root.children[i]))
        }
        return max + 1
    }
    return dfs(root)
};